package 代码记录.指定公司代码练习记录.华为_2024.分值200;

import java.util.Scanner;

/**
 * @author zx
 * @create 2024-02-16 14:49
 */
public class 小扇和小船的数字游戏_43 {
    public static void main(String[] args) {
        // 读取输入
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        // 调用函数并输出结果
        int res = findNextNumber(n);
        System.out.println(res);
    }

    static int findNextNumber(int n) {
        // 计算给定整数的二进制表示中的1的个数
        int countOnes = Integer.bitCount(n);
        // 从n + 1开始尝试找到满足条件的下一个数
        int m = n + 1;
        while (Integer.bitCount(m) != countOnes) {
            m++;
        }
        return m;
    }

    /**
     * 自己的当时写的算法计算给定整数的二进制表示中的1的个数(原来JDK底层封装了方法)
     */
    public int hammingWeight(int n) {
        int res = 0;
        while(n != 0){
            if((n & 1) == 1){
                res++;
            }
            n = n >>> 1;//无符号右移
        }
        return res;
    }
}
